<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 1、定义一个函数，求第二十位的斐波那契数是多少

        // var arr = [];
        // function fn(num) {
        //     for (let i = 0; i < num; i++) {
        //         if (i == 0 || i == 1) {
        //             arr[i] = 1;
        //         } else {
        //             arr[i] = arr[i - 1] + arr[i - 2];
        //         }
        //     }
        //     console.log(arr[num - 1]); // 6765
        // }
        // fn(20);

        // 递归函数
        // function digui(n) {
        //     return n <= 2 ? 1 : digui(n - 1) + digui(n - 2);
        // }
        // console.log(digui(20));
        // // 2、定义一个函数，给定一个年份、月份，判断该月多少天

        // var year = +prompt("请输入年份：");
        // var month = +prompt("请输入正确的月份：");
        // var day;

        // console.log(year);
        // console.log(month);
        // function fn() {
        //     if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {
        //         day = 31;
        //         alert(`${month}月份有${day}天`);
        //     } else if (month == 4 || month == 6 || month == 9 || month == 11) {
        //         day = 30;
        //         alert(`${month}月份有${day}天`);
        //     } else if (month == 2) {
        //         if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
        //             day = 28;
        //             alert(`${month}月份有${day}天`);
        //         }
        //         else {
        //             day = 29;
        //             alert(`${month}月份有${day}天`);
        //         }
        //     } else {
        //         alert("你输入的月份有误！！！")
        //     }
        // };
        // fn();

        // function fn() {
        //     switch (month) {
        //         case 1:
        //         case 3:
        //         case 5:
        //         case 7:
        //         case 8:
        //         case 10:
        //         case 12:
        //             alert("该月有31天");
        //             break;
        //         case 4:
        //         case 6:
        //         case 9:
        //         case 11:
        //             alert("该月有30天");
        //             break;
        //         case 2:
        //             (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) ? alert("该月有29天") : alert("该月有28天");
        //             break;
        //         default:
        //             alert("您输入的月份有误！！！");
        //     }
        // }
        // fn();

        // 3、求100-999之间的水仙花数 最后放入一个数组中  水仙花数：是一个三位数，该三位数各位数字立方之和等于该数本身，例如153就是一个水仙花数

        // var arr = [];
        // var a, b, c;
        // for (let i = 100; i <= 999; i++) {
        //     a = parseInt(i / 100);
        //     b = parseInt(i / 10 % 10);
        //     c = parseInt(i % 10);

        //     if (i == (Math.pow(a, 3) + Math.pow(b, 3) + Math.pow(c, 3))) arr.push(i);
        // }
        // console.log(arr); // 153,370,371,407

        // 4、求现在距离2023年01-01还有多少天

        // // 当前的时间戳
        // var now = new Date();
        // // 2023-1-1的时间戳
        // var after = new Date('2023-01-01 00:00:00');
        // // 时间戳是毫秒的，所以要除1000
        // var day = parseInt((after - now) / 1000 / 60 / 60 / 24);
        // console.log("距离2023-1-1还有" + day + "天");

        // 5、数组a由1～20个数字组成，每个数字为4个，总共80个元素
        // 随机取出15个元素组成新的数组b，编写一个函数对b进行处理，如果b满足每个数字为3个
        // 如：[1,1,1,2,2,2,3,3,3,4,4,4,11,11,11]则返回1，否则返回0
        // 获取随机数： var randomNum = Math.floor(Math.random() * 80)

        // console.log(b);
        function fn() {
            var a = [1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20];
            var b = [];
            for (let i = 0; i < 15; i++) {
                var index = Math.floor(Math.random() * 80);
                b.push(a[index]);
            }
            // b = [1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 11, 11, 11];
            var obj = b.reduce(function (prev, item) {
                prev[item] = prev[item] + 1 || 1;
                return prev;
            }, {});
            var flag = Object.values(obj).every(function (item) {
                return Object.values(obj)[item] == 3;
            })
            console.log(flag);
        }
        fn();

        // 6、使用函数做一个猜数字游戏

        // // 随机生成一个数字
        var random = Math.floor(Math.random() * 10 + 1);
        for (let i = 0; i < 5; i++) {
            var num = +prompt('请输入你猜的数字')
            if (num > random) {
                alert('你猜大了');
            } else if (num < random) {
                alert('你猜小了');
            } else {
                alert('你猜对了');
                break;  // 结束循环
            }
        }

    </script>
</body>

</html>